package com.studyweb.config;

import com.studyweb.interceptor.LoginCheckInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Web配置类
 * 
 * <p>配置拦截器，统一处理token验证</p>
 * 
 * @author StudyWeb Team
 * @since 1.0.0
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    
    @Autowired
    private LoginCheckInterceptor loginCheckInterceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册登录检查拦截器
        registry.addInterceptor(loginCheckInterceptor)
                .addPathPatterns("/**")                          // 拦截所有路径

                .excludePathPatterns("/api/user/sendCode")          // 发送验证码
                .excludePathPatterns("/api/user/verifyCode")        // 验证验证码
                .excludePathPatterns("/api//user/resetPassword")     // 重置密码
                .excludePathPatterns("/api/user/forgot-password/**") // 忘记密码相关接口
                .excludePathPatterns("/api/user/check-username")    // 检查用户名（新接口）
                .excludePathPatterns("/api//user/check-email")       // 检查邮箱
                .excludePathPatterns("/api/user/check-phone")       // 检查手机号

                .excludePathPatterns("/error")                   // 错误页面
                .excludePathPatterns("/favicon.ico")             // 网站图标
                .excludePathPatterns("/static/**")               // 静态资源
                .excludePathPatterns("/css/**")                  // CSS文件
                .excludePathPatterns("/js/**")                   // JS文件
                .excludePathPatterns("/images/**")               // 图片文件          
                .excludePathPatterns("/webjars/**")              // WebJars资源
                .excludePathPatterns("/swagger-ui/**")           // Swagger UI
                .excludePathPatterns("/swagger-resources/**")    // Swagger资源
                .excludePathPatterns("/v2/api-docs")             // API文档
                .excludePathPatterns("/v3/api-docs/**")          // OpenAPI文档
                .excludePathPatterns("/actuator/**")             // Spring Boot Actuator
                .excludePathPatterns("/files/**");               // 文件访问路径

    }
}